#pragma once
#include <stdbool.h>
#include "control.h"
#define MAX_VERTEXES (NODE_NUM+1) // 最大顶点数,如果命名从1开始，那么这个值应该大1
#define INF 9999 // 无穷大，保证路线的总长度不超过这个值
// 定义边的结构体
typedef struct Edge
{
    int u, v;
    int weight;
} Edge;
// 定义邻接表的结构体
typedef struct AdjVNode
{
    int v;
    int weight;
    struct AdjVNode *next;
} AdjVNode;
// 定义顶点的结构体
typedef struct VNode
{
    AdjVNode *first;
} VNode;
// 定义图的结构体
typedef struct Graph
{
    // 顶点数
    int nv;
    //边数
    int ne;
    VNode adjList[MAX_VERTEXES];
} Graph;

Graph* createGraph(Edge edge[], int size);

void deleteGraph(Graph* G);
void printGraph(Graph* G);
void getWay(int path[], int v, uint8_t way[], int wayMaxLen);
bool Dijkstra(const Graph* G, int dist[], int path[], const int s,
              const int target);
